// pub fn run() {
//   // 不要修改下面两行代码!
//   let (x, y) = (1, 2);
//   let s = sum(x, y);

//   assert_eq!(s, 3);
// }

// fn sum(x: i32, y: i32) -> i32 {
//   x + y
// }

// pub fn run() {
//   print();
// }

// // 使用另一个类型来替代 i32
// fn print() -> () {
//   println!("hello,world");
// }

// use std::{thread, time};

// // 用两种方法求解
// pub fn run() {
//   never_return();
// }

// fn never_return() -> ! {
//   // 实现这个函数，不要修改函数签名!
//   // let mut counter = 0;
//   // while counter < 5 {
//   //   print!("   {} ", counter);
//   //   counter = 1;
//   // }
//   loop {
//     println!("I return nothing");
//     // sleeping for 1 second to avoid exhausting the cpu resource
//     thread::sleep(time::Duration::from_secs(1))
//   }
//   // panic!("1");
// }

struct Color(i32, i32, i32);
struct Point(i32, i32, i32);
pub fn run() {
    let v = Point(0, 127, 255);
    check_color(v);
}   

fn check_color(p: Point) {
    let Point(x, _, _) = p;
    assert_eq!(x, 0);
    assert_eq!(p.1, 127);
    assert_eq!(p.2, 255);
 }